package E_2024;

import java.util.Arrays;

/*
    M 辆车需要在一条不能超车的单行道到达终点，起点到终点的距离为 N。
    速度快的车追上前车后，只能以前车的速度继续行驶，求最后一车辆到达目的地花费的时间。
注意:
    每辆车固定间隔 1 小时出发，比如第一辆车 0 时出发，第二辆车 1 时出发，依次类推.
输入描述
    第一行两个数字: M 、N，分别代表车辆数和到终点的距离，以空格分隔.接下来 M 行，每行 1个数字 S代表每辆车的速度
    1< M < 20
    1 < N < 400
    0 < S < 30
输出描述
    最后一辆车到达目的地花费的时间
示例1：
    输入：
    2 11
    3
    2
    输出：
    5.5
    说明：
    2 辆车，距离 11， 0 时出发的车速度快， 1 时出发的车，达到目的地花费 5.5
 */
public class E_200_25 {
    public static void main(String[] args) {
        System.out.println(ans(new int[]{3,2},11));
        System.out.println(ans(new int[]{1,1,3,2},11));
    }
    public static double ans(int[] arr, double len){
        int last = arr[arr.length - 1];
        double ans = 0;
        for (int i = arr.length - 2; i >= 0; i--) {
            int temp = arr[i];
            if (temp < last){
                //  a* (h + x) = b * x
                // ah + ax = bx
                // x = ah / (b-a)
                // ax + ah  - len
                double rt = temp * (arr.length - 1 - i) / (last - temp);
                double t = (len - temp * rt - temp *  (arr.length - 1 - i)) / temp;
                ans = Math.max(ans, rt+t);
            }
        }
        if (ans == 0) ans = len/last;
        return ans;
    }
}
